针对攻防场景下蜜罐的研究

分类

现在诱捕攻击者的web App一般有三种:蜜罐/蜜网/蜜饵。尽管他们在各大厂家的叫法不尽相同,但是发挥的作用却基本一致。

蜜罐

一般都是一个虚假的网站,伪装成如PHPMyadmin/DeDecms/Thinkphp等各种常见的脆弱性站点,并且伴随有弱口令等。

或者是伪装成一些可以反打的东西,比如MYSQL服务器。

蜜网

蜜网比蜜罐高级一点的是,它是由多个蜜罐组成。并且这些蜜罐还都是围绕着该公司的业务专属定制的。比如中国移动的,可能就是什么通信管理啊之类的web站点。这种站点一般都是弱口令,登录进去以后,可能会显示,网站维护中...

蜜铒

这个各家设备的叫法不尽相同,但作用跟蜜铒一致。就是会在特定目录放一些文件,比如说 密码.txt。一旦该文件被打开/复制等操作,那么就代表这台主机失陷了。尽管可能说攻击者费尽心机的绕过了流量侧的流量检查、主机侧的行为检测,但最终难逃一劫

溯源反制

上述这些的核心目的是什么呢?无非就是追踪攻击者甚至反制攻击者达到溯源的目的。经过长时间的观察,我发现蜜罐主要干以下几件事:

追踪溯源

在追踪溯源中,我们最常用的技术就是利用JSONP来获取攻击者的个人信息,我们也将着重介绍一下JSONP这个技术。

JSONP

image-20230822113137545

概述

JSONP是JSON with padding(填充式JSON或参数式JSON),是一种为了跨域获取资源而产生的一种技术手段。这是一种非官方的协议。

跨域原理

同源策略限制了不同源的站点通过ajax获取信息,但是web页面调用js文件则不受跨域的影响并且凡是拥有src属性的标签都可以跨域请求,如script,img等标签。JSONP正是利用这种原理去实现了跨域请求。

JSONP劫持

从JSONP的原理中可以看出这种方式实现了数据的跨域访问,如果网站B对网站A的JSONP请求没有进行安全检查直接返回数据,则网站B 便存在JSONP 漏洞,网站A 利用JSONP漏洞能够获取用户在网站B上的数据。

这种漏洞与CSRF非常相似,只不过CSRF只是发送数据去达到一定的目的,而JSONP劫持是为了获取返回的敏感数据。

image-20230822114127376

曾经抓取的蜜罐JSONP

通过上述接口,可以获取攻击者的一些对应的网站信息,如用户名之类的信息。

通过WebRTC获取真实IP

这也是一个很老的技术,但是很少有人真正去关注过。在现代浏览器如Chrome/Edge/Firefox上均支持,并且默认开启。如果未曾关闭,则可能会暴露你的真实IP,即使你开的是全局代理。

概述

WebRTC(Web Real-Time Communications)是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。WebRTC 包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。

泄露IP原理

WebRTC 允许浏览器之间直接建立点对点连接,从而实现实时通信,例如视频、语音和数据传输。在建立 WebRTC 连接时,浏览器会向对方发送自己的 IP 地址,以便双方建立连接。攻击者可以通过 JavaScript 或其他技术来访问 WebRTC 中的 API,以获取用户的 IP 地址,从而进行跟踪、监视或攻击。

具体来说,攻击者可以利用浏览器的 WebRTC API,通过请求媒体设备的权限,获取用户的 IP 地址。攻击者可以通过编写恶意 JavaScript 代码来执行这些请求,这些代码可能会被插入到网站中,以执行跨站点脚本攻击(XSS)等攻击。

此外,WebRTC 的 STUN/TURN 服务器也可以泄漏用户的 IP 地址。STUN/TURN 服务器是 WebRTC 中用于 NAT 穿透和中继的关键组件。如果这些服务器存在漏洞或者未正确配置,攻击者可以通过它们来获取用户的真实 IP 地址,从而进行攻击。

测试是否存在WEBRTC泄露真实IP

可以使用下面的网址来检测,很不幸,我也中招了:

https://ip8.com/webrtc-test

image-20230822140057907

相关利用程序

下面给出相关代码,可自行搭建

image-20230822142900218

通过MYSQL特性获取信息

这也是一种很常见的手法,甚至该手法最早应该用于攻击者,例如博客上的那一篇:http://www.redteam.wang/static/page/RedTeam/%E7%BA%A2%E9%98%9F%E7%AC%AC%E4%B8%83%E7%AF%87-%E4%BB%8E%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E8%AF%BB%E5%8F%96%E5%88%B0Getshell.html

这篇文章中提到的Adminer低版本存在任意文件读取,实际上就是利用的MYSQL的这个特性。

攻击过程

mysql客户端向Server发起查询后,Server会返回一个Response TABULAR的响应包。而如果在这个数据包中指定文件路径,就可以读取Client相应的文件。实际上Server可以在回复任何Client端的请求时返回Response TABULAR响应包,而不仅仅是在Client发起Load data local infile后。

根据mysql的这种机制,当攻击者访问mysql蜜罐时,我们可以发送一个包含文件路径的响应包去读取客户端的文件。

所以,问题的核心就是:Windows下任意文件读取,读那些?

获取微信号

获取当前个人PC的用户名

image-20230822143425286

获取当前用户的微信号

image-20230822143652032

还可以获取微信昵称

获取CS登录信息

实际上CS的登录信息也存储在一个固定的位置,并且如果未经二开的话,是明文的形式存储的。

image-20230822144758380

可以看到这里的Team Server的IP/端口/密码狠狠的暴露了

这里要么对Team server加入二次验证或是至少加密你的连接信息

image-20230822145510524

限制

上述攻击仍然存在前提,例如链接MYSQL的工具问题。如果是Navice Cat,那就直接被看个底朝天。但要是其他的工具,JDBC的驱动版本高,就无所畏惧。顶多上去触发蜜罐告警,跳板机直接被封而已~

反制

在讲解完溯源篇章后,我们来到了激动人心的反制手法介绍,这真的是太恐怖了。前些年蓝队光想着怎么防守,近些年想着怎么找到你。最近可行,直接选择抓捕你😅😅😅

攻击本地客户端

Clash反制

这招是真的狠,对于本地客户端,如clash Yakit Burpsuite等工具,挖掘他们的一些漏洞,配合蜜罐来完成反制。例如某安X的某星实验室的同志,就因为本地Clash版本低,被人家直接反制了。清清楚楚的看到了他桌面的文章。以下是这个反打的文章,很精彩。

https://mp.weixin.qq.com/s?__biz=MzI3NjA4MjMyMw%3D%3D&mid=2647788487&idx=1&sn=ebbb4fb53b6f74e3279bd94bdc2b9177&scene=45#wechat_redirect

具体流程:

Yakit反制

https://mp.weixin.qq.com/s?__biz=Mzg5NTgxMDg3Nw==&mid=2247484774&idx=1&sn=ebb64c02c91cd5d417398a5149eb7d02

具体流程:

Burpsuite反制

作为最常见的工具,实际上它也可能会被反制。而一切的根源来自于后期Burpsuite自带的Chrome浏览器。可以用一些互联网上的1/Nday的chrome沙盒逃逸漏洞导致可以执行任意命令或shellcode.

但是这玩意似乎网上公布的很少,没能找到啥有用的信息可以做测试样例。例如最近的这个:

https://github.com/numencyber/Vulnerability_PoC/tree/main/CVE-2022-3723

伪装反制

这类会伪装成各种控件VPN等来诱导攻击者下载,最后达到反制的目的。例如访问对方的某个网站时会弹出,该网站需要安全控件才能访问或是跳转到一个VPN下载地址等。而且这类上线的可行性很高,因为攻击者必须安装控件才能访问网站,如果网站的标题很诱人,那么攻击者一定会下载,同时,由于想访问网站,攻击者又不得不连接互联网。即使攻击者设足了策略,但蜜罐本身的这个URL必须在白名单中,那么上线地址也是该URL的话,攻击者就彻底无计可施了。

防范

还记得这篇文章是什么分类吗?是的,他是红队篇,红队篇的根本目的是为红队服务的。我们在花费了这么多时间学习后,希望能让大家在以后的红队项目中,能保护好自己。

对于识别蜜罐,我们不难发现:JSONP蜜罐会在你访问某网站时发送大量的JSONP请求这作为一个极其明显的特征,我们可以针对性的防范。实际上,在互联网上已经有一个成熟的chrome插件来防范蜜罐。

利用插件来自动识别和阻断对蜜罐的访问

https://github.com/Ghr07h/Heimdallr

image-20230823092015588

该插件有两个用途:识别蜜罐与指纹嗅探,对于具体的使用和原理可以查看Github,基本上他就是防范的我们上面说的一些攻击手法。

绑定本地HOST来防止溯源